home *** CD-ROM | disk | FTP | other *** search
Wrap
100 REM *********************************************************** 150 REM * RHEMA 1.0 * 200 REM * GREEK VOCABULARY DRILL SYSTEM * 250 REM * DRILL SUB-PROGRAM * 300 REM * COPYRIGHT 1987 BY DANIEL R. CRIDER * 350 REM * THIS PROGRAM IS RELEASED INTO THE PUBLIC DOMAIN * 400 REM * ON A SHAREWARE BASIS. PLEASE SEND $15 TO DANIEL CRIDER * 450 REM * FOR THE RIGHT TO USE THIS PROGRAM. THIS PROGRAM IS NOT * 500 REM * TO BE RE-SOLD OR RE-RELEASED WITH ANY COMMERCIAL * 550 REM * PACKAGE OR PROGRAM. * 600 REM * FOR NOTICE OF OTHER RIGHTS AND RESTRICTIONS PLEASE * 650 REM * SEE THE FILE RHEMA.DOC WHICH SHOULD BE SUPPLIED WITH * 700 REM * THIS PROGRAM. PLEASE MAIL YOUR PAYMENT AND ANY COMMENTS * 750 REM * TO: * 900 REM * DANIEL CRIDER * 950 REM * 6604 CERVANTES AVE * 1000 REM * FT. WORTH, TEXAS 76133 * 1050 REM * * 1070 REM ************************************************************ 1100 REM ************ SET UP ARRAYS 1150 DIM LI(30),US(30) 1160 DIM GC(6) 1170 FOR I=1 TO 6:GC(I)=0:NEXT I 1200 ML=0 1250 DIM W1$(12),W2$(12),WD(2,12) 1300 DIM LETT$(30,9),LN$(30),CN$(15) 1350 DIM ACC$(15,3) 1400 DIM EG$(30),GZ$(6) 1450 GOSUB 4700 1500 REM ************ LOAD ALPHABET 1550 PRINT 1600 PRINT TAB(36);"RHEMA 1.0" 1650 PRINT 1700 PRINT TAB(18);" COPYRIGHT 1987 BY DANIEL R. CRIDER" 1750 PRINT 1800 OPEN "I",1,"ALPHA.BAS" 1850 FOR I=1 TO 30 1950 PRINT "PLEASE STANDBY.....LOADING GREEK LETTERS ";I 2000 GOSUB 4850 2050 FOR J=1 TO 9 2100 LINE INPUT#1,AX$ 2150 LETT$(I,J)=MID$(AX$,13,6) 2200 NEXT J 2250 NEXT I 2300 PRINT 2350 FOR I=1 TO 15 2450 PRINT "...................LOADING GREEK ACCENTS ";I 2500 GOSUB 4850 2550 FOR J=1 TO 3 2600 LINE INPUT#1,AX$ 2650 ACC$(I,J)=MID$(AX$,13,6) 2700 NEXT J 2750 NEXT I 2800 PRINT 2850 CLOSE #1 2900 FOR I=1 TO 30:READ LN$(I):NEXT I 2950 FOR I=1 TO 15:READ CN$(I):NEXT I 3000 FOR I=1 TO 30:READ EG$(I):NEXT I 3020 FOR I=1 TO 6:READ GZ$(I):NEXT I 3050 PRINT 3100 PRINT 3150 PRINT "ENTER SOME NUMBER FOR THE RANDOM SEED" 3200 PRINT "THE SAME NUMBER USED EACH TIME WILL GIVE THE SAME DRILLS" 3250 RANDOMIZE 3300 REM ************ OPEN VOCABULARY FILE 3350 PRINT 3400 PRINT "PLEASE ENTER THE NAME OF YOUR VOCABULARY FILE" 3450 PRINT "STRIKE THE CARRIAGE RETURN KEY ONLY IF YOU WISH TO" 3500 PRINT "USE THE DEFAULT NAME OF VOCAB" 3550 PRINT "VOCABULARY FILE NAME....."; 3600 INPUT AX$ 3650 IF AX$="" THEN AX$="VOCAB" 3700 GOSUB 4850 3750 PRINT "VOCABULARY FILE NAME.....";AX$ 3800 AX$=AX$ + ".GRK" 3850 PRINT "PLEASE STANDBY...SCANNING VOCABULARY FILE" 3900 OPEN "R",#1,AX$,125 3950 FIELD #1,2 AS W1$(1),2 AS W1$(2),2 AS W1$(3),2 AS W1$(4),2 AS W1$(5),2 AS W1$(6),2 AS W1$(7),2 AS W1$(8),2 AS W1$(9),2 AS W1$(10),2 AS W1$(11),2 AS W1$(12),101 AS Y5$ 4000 FIELD #1,24 AS Y4$,2 AS W2$(1),2 AS W2$(2),2 AS W2$(3),2 AS W2$(4),2 AS W2$(5),2 AS W2$(6),2 AS W2$(7),2 AS W2$(8),2 AS W2$(9),2 AS W2$(10),2 AS W2$(11),2 AS W2$(12),2 AS KG$, 65 AS DF$ 4050 LR=1 4100 DL=0 4150 GET #1,LR 4160 GZ=CVI(KG$) 4170 GC(GZ)=GC(GZ)+1 4200 IF EOF(1) GOTO 4450 4250 WD(2,1)=CVI(W2$(1)) 4300 IF WD(2,1)=99 THEN DL=DL+1 4350 LR=LR+1 4400 GOTO 4150 4450 LR=LR-1 4500 GOTO 5150 4550 REM ************ RING BELL CODE 4600 PRINT CHR$(7);CHR$(7); 4650 RETURN 4700 REM ************ CLEAR SCREEN CODE 4750 PRINT CHR$(26) 4800 RETURN 4850 REM ************ CURSOR UP SCREEN CODE 4900 PRINT CHR$(11); 4950 RETURN 5000 REM ************ CURSOR DOWN SCREEN CODE 5050 PRINT CHR$(10); 5100 RETURN 5150 REM ************ DISPLAY MENU 5200 REM ************* RESET SOME VARIABLES BEFORE MENU DISPLAY 5210 LM$="N" 5250 SX$="" 5300 TX=0 5350 SU=0 5400 GOSUB 4700 5450 PRINT TAB(22);"CURRENTLY ";LR-DL;" VOCABULARY WORDS ON FILE" 5500 PRINT 5550 PRINT 5600 PRINT TAB(35);"RHEMA 1.0" 5650 PRINT TAB(25);"GREEK VOCABULARY DRILL SYSTEM" 5700 PRINT TAB(35);"DRILL SUB-PROGRAM" 5750 PRINT 5850 PRINT TAB(25);"1-- REVIEW LAST X WORDS" 5900 PRINT TAB(25);"2-- REVIEW ENTIRE VOCABULARY" 5950 PRINT TAB(25);"3-- REVIEW ENTIRE VOCABULARY--" 6000 PRINT TAB(25);" --CONCENTRATE ON LAST X WORDS" 6150 PRINT TAB(25);"4-- END PROGRAM" 6200 PRINT 6250 PRINT 6300 PRINT TAB(28);"PLEASE ENTER YOUR CHOICE "; 6350 INPUT M 6400 IF M>4 OR M<1 THEN 6300 6410 IF M=4 THEN 6450 6412 PRINT:PRINT "DO YOU WISH TO LIMIT YOUR DRILL TO A PARTICULAR TYPE OF SPEECH? "; 6414 INPUT LM$ 6416 IF LM$<>"Y" AND LM$<>"N" THEN 6412 6417 IF LM$="N" THEN 6450 6418 PRINT:PRINT 6420 PRINT "ENTER YOUR SELECTED WORD TYPE TO DRILL" 6422 PRINT "1. VERBS 2. NOUNS 3. PRONOUNS 4. ADJECTIVES 5. ADVERBS 6. OTHER" 6424 PRINT "ENTER YOUR CHOICE 1-6 "; 6426 INPUT LM 6428 IF LM<1 OR LM>6 THEN 6424 6430 IF GC(LM)=0 THEN GOSUB 4550:PRINT "BUT YOU DON'T HAVE ANY ";GZ$(LM);"S ON FILE YET!":PRINT:GOTO 6420 6450 ON M GOTO 18150,19350,22900,6500 6500 REM ************ END PROGRAM 6550 PRINT "READY TO QUIT? (Y OR N) "; 6600 INPUT X$ 6650 IF X$<>"Y" AND X$<>"N" THEN 6550 6700 IF X$="N" THEN 5150 6750 CLOSE #1 6800 SYSTEM 18060 REM **************** COMPUTE JZ ********************* 18065 JZ=RX 18070 IF RX>30 THEN JZ=30 18075 IF LR<30 THEN JZ=LR-10 18077 IF LM$="Y" AND GT>=30 THEN JZ=20 18080 IF LM$="Y" AND GT<30 THEN JZ=10 18085 IF JZ<5 THEN JZ=5 18090 RETURN 18110 REM ******** LIMITING OFF ********* 18112 GOSUB 4550 18114 PRINT "NOT ENOUGH WORDS OF TYPE ";GZ$(LM);" IN REVEIW AREA " 18116 PRINT "TO LIMIT DRILL TO." 18118 PRINT "********** LIMITING TURNED OFF *********" 18120 INPUT "STRIKE THE RETURN KEY TO CONTINUE ";AX$ 18122 LM$="N" 18124 RETURN 18130 REM ************** VOCABUALRY SCAN ********** 18132 GT=0 18134 PRINT "STANDBY FOR VOCABULARY SCAN" 18136 FOR I=LR-RX TO LR 18138 GET #1,I 18140 GZ=CVI(KG$) 18142 IF GZ=LM THEN GT=GT+1 18144 NEXT I 18146 RETURN 18150 REM ************ REVIEW LAST X WORDS 18200 GOSUB 4700 18250 PRINT "ENTER THE NUMBER OF YOUR MOST RECENT VOCABULARY WORDS YOU WISH TO REVIEW" 18300 INPUT "ENTER A 0 TO RETURN TO THE MAIN MENU ";RX 18350 IF RX=0 THEN 5150 18460 IF LM$="N" THEN 18500 18470 GOSUB 18130 18480 IF GT<15 THEN GOSUB 18110 18500 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0 18550 SS=0:SR=0 18570 GOSUB 18060 18600 PRINT "ENTER HALT TO RETURN TO MAIN MENU" 18650 PRINT "ENTER SCORE FOR YOUR SCORE" 18700 I=INT(RND*15)+1 18750 IF I>4 AND I<8 THEN 19200 18800 TR=INT(RND*RX)+1 18850 TR=TR+(LR-RX) 18900 FOR I=1 TO JZ 18950 IF US(I)=TR THEN 18800 19000 NEXT I 19050 GOSUB 24100 19060 IF LM$="Y" AND GZ<>LM THEN 18800 19100 GOSUB 20950 19150 GOTO 18700 19200 REM ********** CALL MISS LIST ****** 19250 GOSUB 20250 19260 IF TR=RW THEN 18800 19300 GOTO 18700 19350 REM ************ REVIEW ENTIRE VOCABULARY 19400 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0 19450 SS=0:SR=0 19500 RX=30 19502 IF LM$="N" THEN 19550 19510 GT=GC(LM) 19515 IF GT<15 THEN GOSUB 18110 19520 GOSUB 18060 19550 PRINT "ENTER HALT TO RETURN TO MAIN MENU" 19600 PRINT "ENTER SCORE FOR YOUR SCORE" 19650 I=INT(RND*15)+1 19700 IF I>4 AND I<8 THEN 20100 19750 TR=INT(RND*LR)+1 19800 FOR I=1 TO JZ 19850 IF US(I)=TR THEN 19650 19900 NEXT I 19950 GOSUB 24100 19960 IF LM$="Y" AND GZ<>LM THEN 19750 20000 GOSUB 20950 20050 GOTO 19650 20100 REM ********** CALL MISS LIST ****** 20150 GOSUB 20250 20170 IF TR=RW THEN 19750 20200 GOTO 19650 20250 REM ************ GET ONE OFF OF MISS LIST 20300 IF ML=0 THEN RETURN 20350 MM=1 20400 I=INT(RND*ML)+1 20450 TR=LI(I) 20500 MI=I 20550 GOSUB 24100 20600 GOSUB 20950 20650 MM=0 20700 RETURN 20750 REM SCORE ********************************************** 20800 PRINT "OUT OF ";SS-1;" WORDS YOU HAVE GOTTEN ";SR;" RIGHT FOR A" 20850 PRINT "GRADE OF ";((SR/(SS-1))*100) 20900 RETURN 20950 REM ******************** TRY THE WORD ************************** 21000 SS=SS+1 21050 UL=UL+1 21100 IF UL=LR THEN FOR I=1 TO 30:US(I-1)=0:NEXT I:UL=0 21150 IF UL=JZ THEN FOR I=2 TO JZ:US(I-1)=US(I):NEXT I:UL=UL-1 21200 US(UL)=TR 21250 GOSUB 4700 21300 IF SS<>1 THEN PRINT "GRADE CURRENTLY ";INT((SR/(SS-1))*100) 21350 GOSUB 39650 21400 PRINT 21450 PRINT "DEFINITION IS..."; 21500 INPUT AX$ 21550 IF AX$="OR" OR AX$="**OR**" THEN 21500 21600 IF AX$="SCORE" THEN GOSUB 20750:GOTO 21400 21650 IF AX$="HALT" THEN 5150 21700 IF AX$="" OR AX$=" " THEN 22300 21750 X=INSTR(DF$,AX$) 21800 IF X=0 THEN 22300 21850 PRINT "*** CORRECT *** ";DF$ 21900 IF MA=0 THEN SR=SR+1 21950 IF MM=0 THEN 22100 22000 FOR IJ=MI TO ML-1:LI(IJ)=LI(IJ+1):NEXT IJ 22050 ML=ML-1 22100 FOR I=1 TO 500:NEXT I 22150 IF MA<>0 THEN MA=MA-1:GOTO 21250 22200 GOTO 22250 22250 RETURN 22300 PRINT "*** INCORRECT ANSWER ***" 22350 GOSUB 4550 22400 MA=1 22410 RW=TR 22450 IF KY$="N" THEN MA=1 22500 PRINT "DEFINITION IS...";DF$ 22550 ML=ML+1 22600 IF ML>30 THEN ML=30 22650 LI(ML)=TR 22700 PRINT "STRIKE ANY KEY TO CONTINUE" 22750 X$=INKEY$ 22800 IF X$="" THEN 22750 22850 GOTO 20950 22900 REM ************ REVIEW ENTIRE VOCABULARY--CONCENTRATE ON LAST X WORDS 22950 GOSUB 4700 23000 PRINT "ENTER THE NUMBER OF YOUR MOST RECENT VOCABULARY WORDS YOU WISH TO REVIEW" 23050 INPUT "ENTER A 0 TO RETURN TO THE MAIN MENU ";RX 23100 IF RX=0 THEN 5150 23150 FOR I=1 TO 30:US(I)=0:LI(I)=0:NEXT I:UL=0:ML=0 23250 SS=0:SR=0 23251 IF LM$="N" THEN 23300 23253 GOSUB 18130 23255 IF GT<15 THEN GOSUB 18110 23260 GOSUB 18060 23300 PRINT "ENTER HALT TO RETURN TO MAIN MENU" 23350 PRINT "ENTER SCORE FOR YOUR SCORE" 23400 I=INT(RND*15)+1 23450 IF I>4 AND I<8 THEN 23950 23500 IF I>7 AND I<10 THEN TR=INT(RND*LR)+1:GOTO 23650 23550 TR=INT(RND*RX)+1 23600 TR=TR+(LR-RX) 23650 FOR I=1 TO JZ 23700 IF US(I)=TR THEN 23550 23750 NEXT I 23800 GOSUB 24100 23810 IF LM$="Y" AND GZ<>LM THEN 23550 23850 GOSUB 20950 23900 GOTO 23400 23950 REM ********** CALL MISS LIST ****** 24000 GOSUB 20250 24020 IF TR=RW THEN 23550 24050 GOTO 23400 24100 REM ************ READ A WORD 24150 GET #1, TR 24200 EL$="" 24250 FOR I=1 TO 12 24300 WD(1,I)=CVI(W1$(I)) 24350 WD(2,I)=CVI(W2$(I)) 24400 EL$=EL$ + EG$(WD(2,I)) 24450 NEXT I 24455 X=INSTR(EL$,"GG") 24456 IF X=0 THEN 24460 24457 MID$(EL$,X,2)="NG" 24460 IF WD(1,1)<> 2 AND WD(1,1)<>10 AND WD(1,1)<>11 AND WD(1,1)<>12 AND WD(1,2)<> 2 AND WD(1,2)<>10 AND WD(1,2)<> 11 AND WD(1,2)<> 12 THEN 24470 24461 Z=WD(2,1) 24462 IF Z=1 OR Z=2 OR Z=6 OR Z=8 OR Z=9 OR Z=11 OR Z=17 OR Z=23 OR Z=27 OR Z=28 THEN EL$="H" + EL$:GOTO 24470 24464 EL$=MID$(EL$,1,1) + "H" + MID$(EL$,2,11) 24470 GZ=CVI(KG$) 24500 IF WD(2,1)=99 THEN TR=TR+1:GOTO 24150 24550 RETURN 39300 REM ************ ERROR CONTROL 39350 PRINT "ERROR IS ";ERR 39400 IF ERR=61 THEN PRINT "YOUR DISK IS OUT OF SPACE" 39450 PRINT "PRESS ANY KEY TO CONTINUE" 39500 X$=INKEY$ 39550 IF X$="" THEN 39500 39600 RESUME NEXT 39650 REM ************ DISPLAY WORD ROUTINE 39700 FOR I = 1 TO 11 39750 IF WD(2,I)=29 AND WD(2,I+1)=29 THEN WL=I-1:GOTO 39850 39800 NEXT I 39810 IF WD(2,12)=29 THEN WL=11 39820 IF WD(2,12)<>29 THEN WL=12 39850 Z=WD(2,1) 39900 TX=INT((12-WL)/2)*6 39950 SX$="" 40000 IF WL<12 THEN SX$=" " 40050 FOR J=1 TO 3 40100 PRINT TAB(TX); 40150 FOR I=1 TO WL 40200 Z=WD(1,I) 40250 PRINT ACC$(Z,J); 40300 PRINT SX$; 40350 NEXT I 40400 NEXT J 40450 PRINT 40500 REM CALL POINT FOR NEW WORD 40550 FOR J=1 TO 9 40600 PRINT TAB(TX); 40650 FOR I=1 TO WL 40700 Z=WD(2,I) 40750 PRINT LETT$(Z,J); 40800 PRINT SX$; 40850 NEXT I 40900 PRINT 40950 NEXT J 41000 PRINT 41050 X=LEN(EL$) 41100 Y=40-X/2 41150 PRINT TAB(Y);EL$ 41200 RETURN 43400 DATA "ALPHA","ALPHA-IOTA DIPTHONG","BETA","GAMMA","DELTA","EPSILON","ZETA" 43450 DATA "ETA","ETA-IOTA DIPTHONG","THETA","IOTA","KAPPA","LAMBDA","MU","NU" 43500 DATA "XI","OMICRON","PI","RHO","SIGMA","FINAL SIGMA","TAU","UPSILON" 43550 DATA "PHI","CHI","PSI","OMEGA","OMEGA-IOTA DIPTHONG","BLANK","HYPHEN" 43600 DATA "SMOOTH BREATH","ROUGH BREATH","ACUTE","CIRCUMFLEX","GRAVE" 43650 DATA "DIAERSIS","SMOOTH + GRAVE","SMOOTH + ACUTE", "SMOOTH + CIRC." 43700 DATA "ROUGH + GRAVE", "ROUGH + ACUTE", "ROUGH + CIRC.","CORONIS" 43750 DATA "APOSTROPHE","BLANK (NO MARK)" 43800 DATA "A","AI","B","G","D","E","Z","E","EI","TH","I","K","L","M","N" 43850 DATA "X","O","P","R","S","S","T","U","PH","CH","PS","O","OI"," ","-" 43860 DATA "VERB","NOUN","PRONOUN","ADJECTIVE","ADVERB","OTHER" ,"O","P","R","S","S","T","U","PH","CH","PS","O","OI",